我需要为用户提供一种手段,以jpeg格式将照片上传到他们的网站.但是,照片的原始尺寸非常大,我想在上传前调整大小选项对用户来说非常轻松.似乎我唯一的选择是客户端应用程序,它在通过Web服务上载照片之前调整照片大小,或者在上传操作上调整照片大小的客户端JavaScript挂钩.第二个选项是非常试验性的,因为我没有JavaScript图像大小调整库,并且很难让JavaScript运行我当前的调整大小工具ImageMagick.
我确信这不是一个不常见的场景,并且对这样做的网站的一些建议或指针将不胜感激.
我正在尝试学习如何使用openCV的新c ++接口.
如何访问多通道矩阵的元素.例如:
Mat myMat(size(3, 3), CV_32FC2);
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 3; ++j)
{
//myMat_at_(i,j) = (i,j);
}
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?像旧界面的cvSet2D之类的东西
最有效的方法是什么?类似于在旧界面中使用直接指针.
谢谢
我有一张在iphone上拍摄的JPEG图像.在我的台式PC(Windows照片查看器,谷歌浏览器等)上,方向不正确.
我正在开发一个ASP.NET MVC 3 Web应用程序,我需要上传照片(目前正在使用plupload).
我有一些服务器端代码来处理图像,包括读取EXIF数据.
我已经尝试PropertyTagOrientation在EXIF元数据中读取字段(使用GDI - Image.PropertyItems),但该字段不存在.
所以它是一些特定的iphone元数据,或者其他一些元数据.
我使用了另一种工具,如Aurigma Photo Uploader,它正确读取元数据并旋转图像.它是如何做到的?
有没有人知道其他JPEG元数据可以包含所需的信息,以便知道它需要旋转,Aurigma使用的是什么?
这是我用来读取EXIF数据的代码:
var image = Image.FromStream(fileStream);
foreach (var prop in image.PropertyItems)
{
if (prop.Id == 112 || prop.Id == 5029)
{
// do my rotate code - e.g "RotateFlip"
// Never get's in here - can't find these properties.
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在尝试在即将推出的应用中实现裁剪和透视校正功能.在做研究的同时,我遇到了:
在一组cv :: Point上执行cv :: warpPerspective以进行伪偏移
http://sudokugrab.blogspot.ch/2009/07/how-does-it-all-work.html
所以我决定尝试用OpenCV实现这个功能 - 框架就在那里,所以安装很快.但是,我没有得到我希望的结果:(第二张图片是结果)


我已经翻译了所有代码以使用Xcode并三次检查坐标.你能告诉我我的代码有什么问题吗?为了完整起见,我还包括了UIImage - > Mat转换+反转:
- (void)confirmedImage
{
if ([_adjustRect frameEdited]) {
cv::Mat src = [self cvMatFromUIImage:_sourceImage];
// My original Coordinates
// 4-------3
// | |
// | |
// | |
// 1-------2
CGFloat scaleFactor = [_sourceImageView contentScale];
CGPoint p1 = [_adjustRect coordinatesForPoint:4 withScaleFactor:scaleFactor];
CGPoint p2 = [_adjustRect coordinatesForPoint:3 withScaleFactor:scaleFactor];
CGPoint p3 = [_adjustRect coordinatesForPoint:1 withScaleFactor:scaleFactor];
CGPoint p4 = [_adjustRect coordinatesForPoint:2 withScaleFactor:scaleFactor];
std::vector<cv::Point2f> c1;
c1.push_back(cv::Point2f(p1.x, p1.y));
c1.push_back(cv::Point2f(p2.x, p2.y));
c1.push_back(cv::Point2f(p3.x, p3.y)); …Run Code Online (Sandbox Code Playgroud) 首先,我有这个图像,我想制作一个应用程序,可以检测像它的图像,并从中删除圆(水印).
int main(){
Mat im1,im2,im3,gray,gray2,result;
im2=imread(" (2).jpg");
namedWindow("x",CV_WINDOW_FREERATIO);
imshow("x",im2);
//converting it to gray
cvtColor(im2,gray,CV_BGR2GRAY);
// creating a new image that will have the cropped ellipse
Mat ElipseImg(im2.rows,im2.cols,CV_8UC1,Scalar(0,0,0));
//detecting the largest circle
GaussianBlur(gray,gray,Size(5,5),0);
vector<Vec3f> circles;
HoughCircles(gray,circles,CV_HOUGH_GRADIENT,1,gray.rows/8,100,100,100,0);
uchar x;
int measure=0;int id=0;
for(int i=0;i<circles.size();i++){
if(cvRound(circles[i][2])>measure && cvRound(circles[i][2])<1000){
measure=cvRound(circles[i][2]);
id=i;
}
}
Point center(cvRound(circles[id][0]),cvRound(circles[id][1]));
int radius=cvRound(circles[id][2]);
circle(im2,center,3,Scalar(0,255,0),-1,8,0);
circle(im2,center,radius,Scalar(0,255,0),2,8,0);
ellipse(ElipseImg,center,Size(radius,radius),0,0,360,Scalar(255,255,255),-1,8);
cout<<"center: "<<center<<" radius: "<<radius<<endl;
Mat res;
bitwise_and(gray,ElipseImg,result);
namedWindow("bitwise and",CV_WINDOW_FREERATIO);
imshow("bitwise and",result);
// trying to estimate the Intensity of the circle for the thresholding
x=result.at<uchar>(cvRound(circles[id][0]+30),cvRound(circles[id][1])); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用OpenCV 2.1将两个图像合二为一,两个图像彼此相邻放置.在Python中,我正在做:
import numpy as np, cv
img1 = cv.LoadImage(fn1, 0)
img2 = cv.LoadImage(fn2, 0)
h1, w1 = img1.height,img1.width
h2, w2 = img2.height,img2.width
# Create an array big enough to hold both images next to each other.
vis = np.zeros((max(h1, h2), w1+w2), np.float32)
mat1 = cv.CreateMat(img1.height,img1.width, cv.CV_32FC1)
cv.Convert( img1, mat1 )
mat2 = cv.CreateMat(img2.height, img2.width, cv.CV_32FC1)
cv.Convert( img2, mat2 )
# Copy both images into the composite image.
vis[:h1, :w1] = mat1
vis[:h2, w1:w1+w2] = mat2
h,w = vis.shape
vis2 …Run Code Online (Sandbox Code Playgroud) 我想加载彩色图像,将其转换为灰度,然后反转文件中的数据.
我需要的是:在OpenCV中迭代数组并使用此公式更改每个值(这可能是错误的但对我来说似乎是合理的):
img[x,y] = abs(img[x,y] - 255)
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么它不起作用:
def inverte(imagem, name):
imagem = abs(imagem - 255)
cv2.imwrite(name, imagem)
def inverte2(imagem, name):
for x in np.nditer(imagem, op_flags=['readwrite']):
x = abs(x - 255)
cv2.imwrite(name, imagem)
if __name__ == '__main__':
nome = str(sys.argv[1])
image = cv2.imread(nome)
gs_imagem = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
inverte(gs_imagem, "invertida.png")
inverte2(gs_imagem, "invertida2.png")
Run Code Online (Sandbox Code Playgroud)
我不想做一个明确的循环(我试图更加pythonic).我可以看到,在一张白色背景的图像中,它变成了黑色,但只有这一点看起来不像其他颜色有很多(如果有的话)变化.
在我的xcode项目中添加OpenCV 2框架后,我尝试搜索samlpes或教程以与swift集成.
有没有相同的好教程?
我正在处理图像,以检测并适合包含分布式粒子的图像的任何自由区域中的最大圆圈:
(能够检测粒子的位置).
一个方向是定义一个圆圈触摸任何三点组合,检查圆圈是否为空,然后在所有空圆圈中找到最大的圆圈.然而,它导致大量组合,即C(n,3),n图像中的粒子总数在哪里.
如果有人能提供我可以探索的任何提示或替代方法,我将不胜感激.