标签:map img width cv2 height opencv 180 90
问题描述:
图像旋转90、180、270等
使用类似下面的代码,会有黑边,图像变形之类的问题
其实windows系统自带类似的功能,但是我需要批量处理图像,因此尝试自己写
算法基础:
这种直角的旋转,个人理解不涉及到一些插值的东西,只是像素坐标变换
示例图图像:
逆时针旋转90度:
计算好旋转后各像素点的位置,映射过去就行
就像图像中黄色的点,逆时针旋转90度之后是图像的原点
opencv+python(numpy)实现:
import cv2
import numpy as np
def main():
# 1.随机创建图片
img_src = cv2.imread(r'11.jpg')
height, width = img_src.shape[:2]
print("img width:%d height:%d" % (width, height))
# 2.创建X,Y map
map_x = np.zeros([width, height], np.float32)
map_y = np.zeros([width, height], np.float32)
# 3.执行重映射 调整 X Y map位置
for i in range(width):
for j in range(height):
map_x.itemset((i, j), i)#width -1 - i
map_y.itemset((i, j), j)
# 4.执行重映射处理
img_dst = cv2.remap(img_src, map_x, map_y, cv2.INTER_LINEAR)
# 5.显示结果
cv2.imwrite("qqq\img_yes_1_1_0_1.jpg", img_dst)
cv2.waitKey()
cv2.destroyAllWindows()
if __name__ == '__main__':
main()
记不住在哪抄的了,个人觉得这个代码写的真是不错,有水平很python,简洁
这段代码跑出来是照着对角线旋转,如果想逆时针90度需要将map_x.itemset((i, j), i) 改为map_x.itemset((width - 1 - i, j), i),要怎么旋转全看这个位置
结果:
opencv+C++实现:
https://blog.csdn.net/andylanzhiyong/article/details/84857915
标签:map,img,width,cv2,height,opencv,180,90 来源: https://blog.csdn.net/XDH19910113/article/details/110874694
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。